package test.annotation.custom;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 注解的生命周期：
 * 1、RetentionPolicy.SOURCE：注解只保留在源文件，当Java文件编译成class文件的时候，注解被遗弃；
 * 2、RetentionPolicy.CLASS：注解被保留到class文件，但jvm加载class文件时候被遗弃，这是默认的生命周期；
 * 3、RetentionPolicy.RUNTIME：注解不仅被保存到class文件中，jvm加载class文件之后，仍然存在；
 * 这3个生命周期分别对应于：Java源文件(.java文件) ---> .class文件 ---> 内存中的字节码。
 */
@Retention(RetentionPolicy.RUNTIME)
/**
 * 规定注解标注的地方
 * ElementType.TYPE - 类
 * ElementType.METHOD - 方法
 * ElementType.FIELD - 属性
 */
@Target(ElementType.TYPE)
public @interface MyAnnotation {
	String username() ;
	Class testClass();
	public enum Sex { MAN, WOMAN };
	Sex sex() default Sex.MAN ;
}
